/*
 * ScoresObserver.cpp
 *
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses 
 */

#include "ScoresObserver.h"
#include "MapObject.h"
#include "Bomberman.h"
#include <iostream>

ScoresObserver::ScoresObserver(Partida& game_room)
    : game_room(game_room) {

}

void ScoresObserver::update(Event event, void* entity, void* other) {
    if (event == OBJECT_DESTROYED) {
        MapObject* object = (MapObject*) entity;
        int points = object->getPoints();
        if ((points != 0) && (other != 0)) {
            Bomberman* bomberman = (Bomberman*) other;
            int owner_id = bomberman->getControlingPlayerId();
            game_room.addScore(owner_id, points);
            std::cout << "Se suman " << points << " puntos al jugador con id " << owner_id << std::endl;
        }
    }
}
